from openai import OpenAI
from dotenv import load_dotenv, find_dotenv


"""
准备工作
"""
_ = load_dotenv(find_dotenv()) # 1.加载 .env 文件中定义的环境变量(OPENAI_API_KEY)
client = OpenAI()  # # 2. 初始化 OpenAI 客户端 (client 类对象) ,默认使用环境变量中的 OPENAI_API_KEY 和 OPENAI_BASE_URL

def get_completion(prompt,model,response_format):
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=1,
        stream=True,
        response_format={"type": response_format},
    )
    return response

# 模板 6

instruction = "假设你是一个从事工作20年专业的起名大师，可以根据生辰八字提供适合的名字"  # 1.任务描述
input_text = "生成八字为“2023年12月23日17：20，性别为女，父姓巫，母姓马，请给出适合的大名和小名，其中大名3个字，小名2个字，并给出名字的寓意"  # 2.用户输入
output_format = "以 JSON 格式输出" # 3.约定格式
# examples = "4.举例增加准确性"
cot = "请一步一步分析对话" # 5.增加思维链 提高准确性
# context = f"""
# 客服：有什么可以帮您
# 用户：有什么100G以上的套餐推荐
# 客服：我们有畅游套餐和无限套餐，您有什么价格倾向吗
# 用户：{input_text}
# """  # 6.多轮对话上下文
prompt =f"""
# 目标{instruction}
{cot}
# 用户输入{input_text}
# 输出格式{output_format}
"""
response = get_completion(prompt,response_format="json_object",model="deepseek-r1")

# 用于存储完整的回复内容
full_response = ""

# 遍历生成器对象，处理每个数据块
for chunk in response:
    print(chunk)
    try:
        if chunk.choices:
            choice = chunk.choices[0]
            if choice.delta.content is not None:
                content = choice.delta.content
                full_response += content
                print(content, end='', flush=True)
    except Exception as e:
        print(f"处理数据块时出错: {e}", flush=True)

print("\n完整回复内容：", full_response)
